#Boa:Dialog:Dialog1

import wx
import wx.grid

import consultasBD
import utiles
from decimal import Decimal

ROJO = (255, 145, 145, 255)
VERDE = (145, 255, 145, 255)
AZUL = (145, 145, 255, 255)
BLANCO = (255, 255, 255, 255)
AMARILLO = (254, 248, 191, 255)
GRIS = ( 220, 220, 220, 255)
NEGRO = ( 0, 0, 0, 255)
VERDENEGRO = ( 47, 79, 79, 255)

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1BUTTON2, wxID_DIALOG1BUTTON3, 
 wxID_DIALOG1BUTTON4, wxID_DIALOG1CHECKBOX1, wxID_DIALOG1COMBOBOX1, 
 wxID_DIALOG1COMBOBOX2, wxID_DIALOG1DATEPICKERCTRL1, 
 wxID_DIALOG1DATEPICKERCTRL2, wxID_DIALOG1DATEPICKERCTRL3, 
 wxID_DIALOG1DATEPICKERCTRL4, wxID_DIALOG1GRID1, wxID_DIALOG1PANEL1, 
 wxID_DIALOG1PANEL2, wxID_DIALOG1RADIOBUTTON1, wxID_DIALOG1RADIOBUTTON2, 
 wxID_DIALOG1RADIOBUTTON3, wxID_DIALOG1RADIOBUTTON4, wxID_DIALOG1STATICTEXT3, 
 wxID_DIALOG1STATICTEXT4, wxID_DIALOG1TEXTCTRL1, wxID_DIALOG1TEXTCTRL2, 
] = [wx.NewId() for _init_ctrls in range(23)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(147, 29), size=wx.Size(926, 551),
              style=wx.DEFAULT_DIALOG_STYLE, title='Estimaciones Estadisticas')
        self.SetClientSize(wx.Size(918, 524))

        self.panel1 = wx.Panel(id=wxID_DIALOG1PANEL1, name='panel1',
              parent=self, pos=wx.Point(8, 0), size=wx.Size(336, 24),
              style=wx.TAB_TRAVERSAL)

        self.radioButton1 = wx.RadioButton(id=wxID_DIALOG1RADIOBUTTON1,
              label='Ventas por Temporada', name='radioButton1',
              parent=self.panel1, pos=wx.Point(0, 8), size=wx.Size(128, 13),
              style=0)
        self.radioButton1.SetValue(True)

        self.radioButton2 = wx.RadioButton(id=wxID_DIALOG1RADIOBUTTON2,
              label='Ventas p/Fecha (desde/hasta)', name='radioButton2',
              parent=self.panel1, pos=wx.Point(152, 8), size=wx.Size(192, 13),
              style=0)
        self.radioButton2.SetValue(False)

        self.comboBox1 = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOBOX1,
              name='comboBox1', parent=self, pos=wx.Point(24, 24),
              size=wx.Size(130, 21), style=0, value='')
        self.comboBox1.SetLabel('')

        self.datePickerCtrl1 = wx.DatePickerCtrl(id=wxID_DIALOG1DATEPICKERCTRL1,
              name='datePickerCtrl1', parent=self, pos=wx.Point(160, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.datePickerCtrl2 = wx.DatePickerCtrl(id=wxID_DIALOG1DATEPICKERCTRL2,
              name='datePickerCtrl2', parent=self, pos=wx.Point(240, 24),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='Proveedor', name='staticText3', parent=self,
              pos=wx.Point(344, 8), size=wx.Size(50, 13), style=0)

        self.staticText4 = wx.StaticText(id=wxID_DIALOG1STATICTEXT4,
              label='(proveedores a los que no se les compro nada)',
              name='staticText4', parent=self, pos=wx.Point(672, 24),
              size=wx.Size(225, 13), style=0)

        self.panel2 = wx.Panel(id=wxID_DIALOG1PANEL2, name='panel2',
              parent=self, pos=wx.Point(8, 48), size=wx.Size(328, 16),
              style=wx.TAB_TRAVERSAL)

        self.radioButton3 = wx.RadioButton(id=wxID_DIALOG1RADIOBUTTON3,
              label='Compras por Temporada', name='radioButton3',
              parent=self.panel2, pos=wx.Point(0, 0), size=wx.Size(144, 13),
              style=0)
        self.radioButton3.SetValue(True)

        self.radioButton4 = wx.RadioButton(id=wxID_DIALOG1RADIOBUTTON4,
              label='Compras p/Fecha (desde/hasta)', name='radioButton4',
              parent=self.panel2, pos=wx.Point(152, 0), size=wx.Size(176, 13),
              style=0)
        self.radioButton4.SetValue(False)

        self.comboBox2 = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOBOX2,
              name='comboBox2', parent=self, pos=wx.Point(24, 64),
              size=wx.Size(130, 21), style=0, value='')
        self.comboBox2.SetLabel('')

        self.datePickerCtrl3 = wx.DatePickerCtrl(id=wxID_DIALOG1DATEPICKERCTRL3,
              name='datePickerCtrl3', parent=self, pos=wx.Point(160, 64),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.datePickerCtrl4 = wx.DatePickerCtrl(id=wxID_DIALOG1DATEPICKERCTRL4,
              name='datePickerCtrl4', parent=self, pos=wx.Point(240, 64),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.textCtrl1 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL1, name='textCtrl1',
              parent=self, pos=wx.Point(344, 24), size=wx.Size(64, 21), style=0,
              value='')
        self.textCtrl1.Bind(wx.EVT_KILL_FOCUS, self.OnKillProveedor1)

        self.textCtrl2 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL2, name='textCtrl2',
              parent=self, pos=wx.Point(408, 24), size=wx.Size(144, 21),
              style=0, value='')
        self.textCtrl2.Bind(wx.EVT_KILL_FOCUS, self.OnKillProveedor2)

        self.checkBox1 = wx.CheckBox(id=wxID_DIALOG1CHECKBOX1,
              label='Omito compras 0', name='checkBox1', parent=self,
              pos=wx.Point(568, 24), size=wx.Size(104, 13), style=0)
        self.checkBox1.SetValue(True)

        self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1,
              label='Ganancia por Proveedor', name='button1', parent=self,
              pos=wx.Point(8, 96), size=wx.Size(136, 24), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnGananciaPorProveedor,
              id=wxID_DIALOG1BUTTON1)

        self.button2 = wx.Button(id=wxID_DIALOG1BUTTON2, label='Limpiar',
              name='button2', parent=self, pos=wx.Point(8, 496),
              size=wx.Size(75, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnLimpiar, id=wxID_DIALOG1BUTTON2)

        self.button4 = wx.Button(id=wxID_DIALOG1BUTTON4, label='Imprimir',
              name='button4', parent=self, pos=wx.Point(744, 496),
              size=wx.Size(75, 23), style=0)
        self.button4.Bind(wx.EVT_BUTTON, self.OnImprimir,
              id=wxID_DIALOG1BUTTON4)

        self.button3 = wx.Button(id=wxID_DIALOG1BUTTON3, label='Salir',
              name='button3', parent=self, pos=wx.Point(840, 496),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnSalir, id=wxID_DIALOG1BUTTON3)

        self.grid1 = wx.grid.Grid(id=wxID_DIALOG1GRID1, name='grid1',
              parent=self, pos=wx.Point(8, 128), size=wx.Size(904, 360),
              style=0)

    def __init__(self, parent):
        self._init_ctrls(parent)
        fecha1 = str(utiles.getDaysExtreme()[0])
        utiles.cargar_fecha(fecha1,self.datePickerCtrl1)
        utiles.cargar_fecha(fecha1,self.datePickerCtrl3)
        self.codigoListado = 0
        self.encontrado = False
        self.llenarCombo()
        self.crearGrilla()
        self.radioButton1.SetFocus()

    def llenarCombo(self):
        anio = int(utiles.obtenerFecha("Y-m-d")[:4])
        mes = int(utiles.obtenerFecha("Y-m-d")[5:7])
        dia = int(utiles.obtenerFecha("Y-m-d")[-2:])
        anioanterior = anio -1
        anioactual = anio
        aniosiguiente = anio + 1
        self.comboBox1.Append("INVIERNO"+str(anioanterior))
        self.comboBox1.Append("VERANO"+str(anioanterior))
        self.comboBox1.Append("INVIERNO"+str(anioactual))
        self.comboBox1.Append("VERANO"+str(anioactual))
        self.comboBox1.Append("INVIERNO"+str(aniosiguiente))
        self.comboBox1.Append("VERANO"+str(aniosiguiente))
        self.comboBox1.SetEditable(False)
        #Este codigo de IF permite setear automaticamente la temporada
        if mes < 8: #invierno
            self.comboBox1.SetSelection(2)
        else: #verano
            self.comboBox1.SetSelection(3)
        self.comboBox2.Append("INVIERNO"+str(anioanterior))
        self.comboBox2.Append("VERANO"+str(anioanterior))
        self.comboBox2.Append("INVIERNO"+str(anioactual))
        self.comboBox2.Append("VERANO"+str(anioactual))
        self.comboBox2.Append("INVIERNO"+str(aniosiguiente))
        self.comboBox2.Append("VERANO"+str(aniosiguiente))
        self.comboBox2.SetEditable(False)
        #Este codigo de IF permite setear automaticamente la temporada
        if mes < 8: #invierno
            self.comboBox2.SetSelection(2)
        else: #verano
            self.comboBox2.SetSelection(3)

    def OnSalir(self, event):
        self.Close()

    def confirma(self,texto):
        import Dialog2
        confirma = Dialog2.Dialog2(None, texto)
        try:
            confirma.ShowModal()
            if confirma.getSeleccion():
                seguir = True
            else:
                seguir = False
        except:
            confirma.Destroy()
            return False
        confirma.Destroy()
        return seguir
    
    def OnKillProveedor1(self, event):
        idproveedor = self.textCtrl1.GetLabel()
        self.buscarProveedor(idproveedor=idproveedor)
        
    def OnKillProveedor2(self, event):
        nombre = self.textCtrl2.GetLabel()
        self.buscarProveedor(nombre=nombre)
 
    def buscarProveedor(self,idproveedor="",nombre=""):
        if idproveedor == "" and nombre == "":
            return
        if self.encontrado:
            self.encontrado = False
            self.button1.SetFocus()
            return

        if idproveedor != "":
            r1 = "SELECT idproveedor,nombre FROM proveedor "
            r2 = "WHERE idproveedor='"+idproveedor+"' "
            consultaSQL = r1+r2
            resultado = consultasBD.ordenCrudaDict(consultaSQL)
            if resultado != ():
                proveedor = resultado[0]
                self.textCtrl1.SetLabel(proveedor["idproveedor"])
                self.textCtrl2.SetLabel(proveedor["nombre"])
                self.textCtrl1.Enable(False)
                self.textCtrl2.Enable(False)
                self.encontrado = True
                return
            self.textCtrl1.SetLabel("")
            self.textCtrl2.SetFocus()
            return

        if nombre == "*":
            self.encontrado = True
            self.datePickerCtrl1.SetFocus()
            return

        r1 = "SELECT idproveedor,nombre FROM proveedor "
        r2 = "WHERE nombre LIKE '%"+nombre+"%' "
        consultaSQL = r1+r2
        resultado = consultasBD.ordenCrudaDict(consultaSQL)
        if len(resultado)==1:
            proveedor = resultado[0]
            self.textCtrl1.SetLabel(proveedor["idproveedor"])
            self.textCtrl2.SetLabel(proveedor["nombre"])
            self.textCtrl1.Enable(False)
            self.textCtrl2.Enable(False)
            self.encontrado = True
            return
        if len(resultado)>1:
            import BuscaProveedor2
            ventana = BuscaProveedor2.Dialog1(self,nombre)
            try:
                ventana.ShowModal()
                eleccion = ventana.getSeleccion()
            finally:
                ventana.Destroy()
            if eleccion.split(" / ") != ['']:
                self.textCtrl1.SetValue(eleccion.split(" / ")[1])
                self.textCtrl2.SetValue(eleccion.split(" / ")[0])
                self.textCtrl1.Enable(False)
                self.textCtrl2.Enable(False)
                self.encontrado = True
            return
        self.textCtrl1.SetLabel("")
        self.textCtrl2.SetLabel("")
        self.textCtrl1.SetFocus()
        return

    def limpiarGrilla(self):
        self.grid1.ClearGrid()
        for fil in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        for fil in xrange(self.grid1.GetNumberCols()):
            self.grid1.DeleteCols()
        self.grid1.AppendCols()
        self.grid1.SetColLabelValue(0,' ')

    def OnLimpiar(self, event):
        self.limpiarGrilla()
        sql = "DROP TABLE IF EXISTS estimacionesestadisticas"
        consultasBD.ordenCruda(sql)
        self.textCtrl1.SetLabel("")
        self.textCtrl2.SetLabel("")
        self.textCtrl1.Enable(True)
        self.textCtrl2.Enable(True)
        self.radioButton1.SetValue(True)
        self.radioButton2.SetValue(False)
        self.radioButton3.SetValue(True)
        self.radioButton4.SetValue(False)
        self.radioButton1.SetFocus()

    def rangoFecha(self):
        fecha1 = self.datePickerCtrl1.GetLabel()
        fecha1 = fecha1.replace("/","-")
        fecha1 = utiles.invertirFecha(fecha1)
        fecha2 = self.datePickerCtrl2.GetLabel()
        fecha2 = fecha2.replace("/","-")
        fecha2 = utiles.invertirFecha(fecha2)
        fecha3 = self.datePickerCtrl3.GetLabel()
        fecha3 = fecha3.replace("/","-")
        fecha3 = utiles.invertirFecha(fecha3)
        fecha4 = self.datePickerCtrl4.GetLabel()
        fecha4 = fecha4.replace("/","-")
        fecha4 = utiles.invertirFecha(fecha4)
        return fecha1,fecha2,fecha3,fecha4

    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(y,True)

    def crearGrilla(self):
        columnas = [' ']
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)

        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid1.EnableEditing(False)
        self.ajustarAnchoColumnas()
        self.grid1.Refresh()

    def crearTablaProvisoriaGananciaPorProveedor(self):
        sql = "DROP TABLE IF EXISTS estimacionesestadisticas"
        consultasBD.ordenCruda(sql)
        print "-Creando tablas auxiliares"
        r1 = "CREATE TABLE  `estimacionesestadisticas` ("
        r2 = "`id` INT NOT NULL AUTO_INCREMENT ,"
        r3 = "`idproveedor` VARCHAR(10) NOT NULL ,"
        r4 = "`nombre` VARCHAR(50) NOT NULL ,"
        r5 = "`itemscomprados` INT(5) NOT NULL DEFAULT 0,"
        r6 = "`montocomprado` DECIMAL(15,2) NOT NULL DEFAULT 0,"
        r7 = "`porcentaje` INT(2) NOT NULL DEFAULT 0,"
        r8 = "`itemsvendidos` INT(5) NOT NULL DEFAULT 0,"
        r9 = "`ventavalorizada` DECIMAL(15,2) NOT NULL DEFAULT 0,"
        r0 = "`ventaal100` DECIMAL(15,2) NOT NULL DEFAULT 0,"
        rA = "`pendienteavender` DECIMAL(15,2) NOT NULL DEFAULT 0,"
        rB = "`ganancia` DECIMAL(15,2) NOT NULL DEFAULT 0,"
        rC = "`sucursal` VARCHAR(2) NOT NULL DEFAULT 0,"
        rD = "PRIMARY KEY (`id`)"
        rE = ") ENGINE = INNODB"
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB+rC+rD+rE
        consultasBD.ordenCruda(sql)

    #lista los id de los proveedores a los que se les compraron
    def proveedoresConCompras(self,fecha1,fecha2):
        print "-Obteniendo idproveedores a los que se les compro"
        
        if self.radioButton4.GetValue():
            fecha1,fecha2,fecha3,fecha4 = self.rangoFecha()
            r1 = "SELECT DISTINCT c.idproveedor FROM compras c \n"
            r2 = "WHERE c.fechaingreso BETWEEN '"+fecha3+" 00:00:00'\n"
            r3 = "                     AND '"+fecha4+" 23:59:59' \n"
            r4 = "ORDER BY c.idproveedor "
            r5 = ""
            r6 = ""
        else:
            temporada = self.comboBox2.GetLabel()
            r1 = "SELECT DISTINCT c.idproveedor \n"
            r2 = "FROM compras c, comprasaldos cs \n"
            r3 = "WHERE c.nrofactura=cs.nrofactura AND cs.temporada='"+temporada+"' \n"
            r4 = "      AND idoperacion='COMPRA' AND cs.interno='0' \n"
            r5 = "      AND c.idproveedor=cs.idproveedor \n"
            r6 = "ORDER BY c.idproveedor "
        sql = r1+r2+r3+r4+r5+r6
        #print;print sql;print
        datos = consultasBD.ordenCruda(sql)
        proveedores = []
        for item in datos:
            proveedores.append(item)
        return proveedores

    #lista los id de los proveedores que se vendieron
    def proveedoresConVentas(self,fecha1,fecha2):
        print "-Obteniendo idproveedores que se vendieron"
        
        if self.radioButton2.GetValue():
            fecha1,fecha2,fecha3,fecha4 = self.rangoFecha()
            r1 = "SELECT DISTINCT pv.idproveedor \n"
            r2 = "FROM ventas v,ventastieneproductos vtp,producto_talle_color ptc, \n"
            r3 = "     productos p,proveedor pv \n"
            r4 = "WHERE v.fecha BETWEEN '"+fecha1+" 00:00:00' AND '"+fecha2+" 23:59:59' \n"
            r5 = "      AND v.idventa=vtp.idticket AND vtp.ptc=ptc.id \n"
            r6 = "      AND ptc.codsussan=p.codsussan AND p.proveedor=pv.idproveedor "
        else:
            temporada = self.comboBox1.GetLabel()
            r1 = "SELECT DISTINCT pv.idproveedor \n"
            r2 = "FROM ventas v,ventastieneproductos vtp,producto_talle_color ptc, \n"
            r3 = "     productos p,proveedor pv \n"
            r4 = "WHERE p.temporada='"+temporada+"' \n"
            r5 = "      AND v.idventa=vtp.idticket AND vtp.ptc=ptc.id \n"
            r6 = "      AND ptc.codsussan=p.codsussan AND p.proveedor=pv.idproveedor "
        sql = r1+r2+r3+r4+r5+r6
        #print;print sql;print
        datos = consultasBD.ordenCruda(sql)
        proveedores = []
        for item in datos:
            proveedores.append(item)
        return proveedores

    def comprasProveedores(self,proveedores=""):
        print "-Procesando compras:",
        opcion2 = ""
        if len(proveedores)==1:
            opcion2 = " AND c.idproveedor='"+proveedores[0]+"' \n"

        if self.radioButton4.GetValue():
            fecha1,fecha2,fecha3,fecha4 = self.rangoFecha()
            opcion1 = " c.fechaingreso BETWEEN '"+fecha3+" 00:00:00' "
            opcion1+= " AND '"+fecha4+" 23:59:59' \n"

            r1 = "SELECT p1.idproveedor,p1.nombre,SUM(p1.cantidad) AS cantidad,\n"
            r2 = "       SUM(p1.subtotal) AS costo,SUM(p1.total) AS venta,p1.parametro \n"
            r3 = "FROM \n"
            r4 = "   (SELECT c.idproveedor,pv.nombre,ci.idfactura,ci.codsussan,\n"
            r5 = "           ci.cantidad,ci.cantidad*ci.costounidad AS subtotal,\n"
            r6 = "           ci.cantidad*p.preciolt1 AS total, pv.parametro \n"
            r7 = "    FROM compras_items ci, compras c, proveedor pv, productos p \n"
            r8 = "    WHERE "+opcion1+opcion2+" AND ci.color<>'PROCESADO' \n"
            r9 = "          AND c.idfactura=ci.idfactura AND c.idproveedor=pv.idproveedor \n"
            r0 = "          AND ci.codsussan<>'DEV' AND ci.codsussan=p.codsussan \n"
            rA = "    ORDER BY c.idproveedor,c.fechaingreso) AS p1 \n"
            rB = "WHERE 1 GROUP BY p1.nombre "
            sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB
            #print;print sql;print
        else:
            temporada = self.comboBox2.GetLabel()
            r1 = "SELECT p1.idproveedor,p1.nombre,SUM(p1.cantidad ) AS cantidad,\n"
            r2 = "       SUM(p1.subtotal) AS costo, SUM(p1.total) AS venta,\n"
            r3 = "       p1.parametro \n"
            r4 = "FROM \n"
            r5 = "  (SELECT c.idproveedor,pv.nombre,ci.idfactura,ci.codsussan, \n"
            r6 = "          ci.cantidad,ci.cantidad*ci.costounidad AS subtotal, \n"
            r7 = "          ci.cantidad*p.preciolt1 AS total,pv.parametro \n"
            #r8 = "   FROM compras_items ci,compras c,proveedor pv,productos p, \n"
            r8 = "   FROM compras_items ci,compras c,proveedor pv,productos p \n"
            #r9 = "        comprasaldos cs \n"
            r9 = ""
            #r0 = "   WHERE cs.temporada='"+temporada+"' "+opcion2
            r0 = "   WHERE p.temporada='"+temporada+"' "+opcion2
            #rA = "         AND c.nrofactura=cs.nrofactura AND cs.interno='0' \n"
            rA = ""
            #rB = "         AND cs.idoperacion='COMPRA' AND cs.idproveedor=c.idproveedor \n"
            rB = ""
            rC = "         AND c.idfactura=ci.idfactura AND c.idproveedor=pv.idproveedor \n"
            rD = "         AND ci.codsussan<>'DEV' AND ci.color<>'PROCESADO' \n"
            rE = "         AND ci.codsussan=p.codsussan \n"
            rF = "   ORDER BY c.idproveedor, c.fechaingreso) AS p1 \n"
            rG = "WHERE 1 GROUP BY p1.nombre "
            sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB+rC+rD+rE+rF+rG
            #print;print sql;print
        #se piden datos al servidor de respaldo para no recargar produccion
        datos,conecta = consultasBD.ordenCrudaDictRemota2(sql,0)

        if not conecta:
            print "-Sin conexion con servidor de Casa Central"
        dir = "c:\\matrisamor.doc\\"
        archivo = "estimacionesestadisticas.sql"
        nombreArchivo = dir+archivo
        f = open(nombreArchivo,"w")
        for item in datos:
            idproveedor = str(item["idproveedor"])
            nombre = str(item["nombre"])
            itemscomprados = str(item["cantidad"])
            montocomprado = str(item["costo"])
            porcentaje = str(item["parametro"])
            ventaal100 = str(item["venta"])
            a = "INSERT INTO estimacionesestadisticas(idproveedor,nombre,"
            a+= "itemscomprados,montocomprado,porcentaje,ventaal100) VALUES"
            a+= "('"+idproveedor+"','"+nombre+"','"+itemscomprados+"',"
            a+= "'"+montocomprado+"','"+porcentaje+"','"+ventaal100+"');"
            f.write(a+";\n")
        f.close()

    def devolucionProveedores(self,proveedores=""):
        print "-Procesando devoluciones:",
        opcion2 = ""
        if len(proveedores)==1:
            opcion2 = " AND c.idProveedor='"+proveedores[0]+"' \n"

        if self.radioButton4.GetValue():
            fecha1,fecha2,fecha3,fecha4 = self.rangoFecha()
            opcion1 = " c.fecha BETWEEN '"+fecha3+" 00:00:00' "
            opcion1+= " AND '"+fecha4+" 23:59:59' \n"

            r1 = "SELECT p1.idproveedor,p1.nombre,SUM(p1.cantidad) AS cantidad, \n"
            r2 = "       SUM(p1.subtotal) AS costo,SUM(venta) AS venta,p1.parametro \n"
            r3 = "FROM \n"
            r4 = "  (SELECT c.idProveedor,pv.nombre,ci.idDevolucion,ci.codsussan, \n"
            r5 = "          ci.cantidad*-1 AS cantidad,ci.cantidad*p.preciolt1*-1 AS venta, \n"
            r6 = "          ci.cantidad*ci.monto*-1 AS subtotal,pv.parametro \n"
            r7 = "   FROM comprasdevoluciones_items ci, comprasdevoluciones c, \n"
            r8 = "        proveedor pv, productos p \n"
            r9 = "   WHERE "+opcion1+opcion2
            r0 = "         AND c.idDevolucion=ci.idDevolucion \n"
            rA = "         AND c.idProveedor=pv.idproveedor \n"
            rB = "         AND ci.codsussan = p.codsussan) AS p1 \n"
            rC = "WHERE 1 GROUP BY p1.nombre "
            sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB+rC
            #print;print sql;print
        else:
            temporada = self.comboBox2.GetLabel()
            r1 = "SELECT p1.idproveedor,p1.nombre,SUM(p1.cantidad) AS cantidad, \n"
            r2 = "       SUM(p1.subtotal) AS costo,SUM(venta) AS venta,p1.parametro \n"
            r3 = "FROM \n"
            r4 = "  (SELECT c.idProveedor,pv.nombre,ci.idDevolucion,ci.codsussan, \n"
            r5 = "          ci.cantidad*-1 AS cantidad,ci.cantidad*p.preciolt1*-1 AS venta, \n"
            r6 = "          ci.cantidad*ci.monto*-1 AS subtotal,pv.parametro \n"
            r7 = "   FROM comprasdevoluciones_items ci, comprasdevoluciones c, \n"
            r8 = "        proveedor pv, productos p \n"
            r9 = "   WHERE p.temporada='"+temporada+"' "+opcion2
            r0 = "         AND c.idDevolucion=ci.idDevolucion \n"
            rA = "         AND c.idProveedor=pv.idproveedor \n"
            rB = "         AND ci.codsussan = p.codsussan) AS p1 \n"
            rC = "WHERE 1 GROUP BY p1.nombre "
            sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB+rC
            #print;print sql;print

        #se piden datos al servidor de respaldo para no recargar produccion
        datos,conecta = consultasBD.ordenCrudaDictRemota2(sql,0)

        if not conecta:
            print "-Sin conexion con servidor de Casa Central"
        dir = "c:\\matrisamor.doc\\"
        archivo = "estimacionesestadisticas.sql"
        nombreArchivo = dir+archivo
        f = open(nombreArchivo,"a")
        for item in datos:
            idproveedor = str(item["idproveedor"])
            nombre = str(item["nombre"])
            itemscomprados = str(item["cantidad"])
            montocomprado = str(item["costo"])
            porcentaje = str(item["parametro"])
            ventaal100 = str(item["venta"])
            a = "INSERT INTO estimacionesestadisticas(idproveedor,nombre,"
            a+= "itemscomprados,montocomprado,porcentaje,ventaal100) VALUES"
            a+= "('"+idproveedor+"','"+nombre+"','"+itemscomprados+"',"
            a+= "'"+montocomprado+"','"+porcentaje+"','"+ventaal100+"');"
            f.write(a+";\n")
        f.close()

    def ventasPorProveedor(self,sucursal,proveedores=""):
        print "-Procesando ventas:",
        opcion2 = ""
        if len(proveedores)==1:
            opcion2 = " AND pv.idproveedor='"+proveedores[0]+"' \n"

        if self.radioButton2.GetValue():
            fecha1,fecha2,fecha3,fecha4 = self.rangoFecha()
            opcion1 = " v.fecha BETWEEN '"+fecha1+" 00:00:00' "
            opcion1+= " AND '"+fecha2+" 23:59:59' \n"

            r1 = "SELECT idproveedor,nombre,sucursal,SUM(cantidad) AS cantidad, \n"
            r2 = "       SUM(preciofinal) AS venta \n"
            r3 = "FROM \n"
            r4 = "  (SELECT pv.idproveedor,vtp.cantidad,vtp.preciofinal,\n"
            r5 = "          v.sucursal,pv.nombre \n"
            r6 = "   FROM ventas v, ventastieneproductos vtp, \n"
            r7 = "        producto_talle_color ptc, productos p, proveedor pv \n"
            r8 = "   WHERE "+opcion1
            r9 = "        AND v.idventa=vtp.idticket AND ptc.id=vtp.ptc \n"
            r0 = "        AND ptc.codsussan=p.codsussan \n"
            rA = "        AND p.proveedor=pv.idproveedor "+opcion2+" ) AS p1 \n"
            rB = "WHERE 1 GROUP BY idproveedor "
            sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB
            #print;print sql;print
        else:
            temporada = self.comboBox1.GetLabel()
            r1 = "SELECT idproveedor,nombre,sucursal,SUM(cantidad) AS cantidad, \n"
            r2 = "       SUM(preciofinal) AS venta \n"
            r3 = "FROM \n"
            r4 = "  (SELECT pv.idproveedor,vtp.cantidad,vtp.preciofinal,\n"
            r5 = "          v.sucursal,pv.nombre \n"
            r6 = "   FROM ventas v, ventastieneproductos vtp, \n"
            r7 = "        producto_talle_color ptc, productos p, proveedor pv \n"
            r8 = "   WHERE p.temporada='"+temporada+"' \n"
            r9 = "        AND v.idventa=vtp.idticket AND ptc.id=vtp.ptc \n"
            r0 = "        AND ptc.codsussan=p.codsussan \n"
            rA = "        AND p.proveedor=pv.idproveedor "+opcion2+" ) AS p1 \n"
            rB = "WHERE 1 GROUP BY idproveedor "
            sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA+rB
            #print;print sql;print
            
        datos,conecta = consultasBD.ordenCrudaDictRemota2(sql,sucursal)

        if not conecta:
            print "-Sin conexion con sucursal",sucursal+1
        dir = "c:\\matrisamor.doc\\"
        archivo = "estimacionesestadisticas.sql"
        nombreArchivo = dir+archivo
        f = open(nombreArchivo,"a")
        for item in datos:
            idproveedor = str(item["idproveedor"])
            if not idproveedor in proveedores: continue
            nombre = str(item["nombre"])
            itemscomprados = "0"
            montocomprado = "0.00"
            porcentaje = "0"
            ventaal100 = "0.00"
            itemsvendidos = str(item["cantidad"])
            ventavalorizada = str(item["venta"])
            sucursal = str(item["sucursal"])
            ventaal100 = "0.00"
            a = "INSERT INTO estimacionesestadisticas(idproveedor,nombre,"
            a+= "itemscomprados,montocomprado,porcentaje,ventaal100,"
            a+= "itemsvendidos,ventavalorizada,sucursal) VALUES"
            a+= "('"+idproveedor+"','"+nombre+"','"+itemscomprados+"',"
            a+= "'"+montocomprado+"','"+porcentaje+"','"+ventaal100+"',"
            a+= "'"+itemsvendidos+"','"+ventavalorizada+"','"+sucursal+"');"
            f.write(a+";\n")
        f.close()
        
    def cargaArchivoGananciaPorProveedor(self):
        print "-Procesando carga de datos",
        dir = "c:\\matrisamor.doc\\"
        archivo = "estimacionesestadisticas.sql"
        nombreArchivo = dir+archivo
        import servers
        host = servers.host
        user = servers.user
        passwd = servers.passwd
        db_name = servers.db_name
        import os
        try:
            comando = "mysql.exe -u "+user+" -p"+passwd+" -h "+host+" "+db_name+" < "+nombreArchivo
            os.system(comando)
            print "-> OK "
        except:
            print "-> ERROR: No pudo actualizarse la tabla"

    def actualizandoGrillaGananciaPorProveedor(self):
        print "-Recalculando"
        #Proveedor,ItemsComprados,MontoCompra,IVA,%,ItemVendido,Valorizado,Pendiente,Ganancia,Eficacia
        #0         1              2           3   4 5           6          7         8        9
        r1 = "SELECT idproveedor,nombre,itemscomprados,montocomprado,porcentaje,itemsvendidos,\n"
        r2 = "       ventavalorizada,ventaal100,ventaal100-ventavalorizada AS pendiente,\n"
        r3 = "       ventavalorizada-montocomprado AS ganancia,\n"
        r4 = "       100-(itemscomprados-itemsvendidos)/itemscomprados*100 AS efectividad \n"
        r5 = "FROM \n"
        r6 = "  (SELECT idproveedor,nombre,SUM(itemscomprados) AS itemscomprados,\n"
        r7 = "          SUM(montocomprado) AS montocomprado,porcentaje,\n"
        r8 = "          SUM(itemsvendidos) AS itemsvendidos,SUM(ventavalorizada) AS ventavalorizada,\n"
        r9 = "          SUM(ventaal100) AS ventaal100 \n"
        r0 = "   FROM estimacionesestadisticas WHERE 1 GROUP BY idproveedor ) AS p1 \n"
        rA = "WHERE 1 ORDER BY ganancia DESC "
        sql = r1+r2+r3+r4+r5+r6+r7+r8+r9+r0+rA
        datos = consultasBD.ordenCrudaDict(sql)
        fil = 0
        tItemsComprados = 0
        tMontoComprado = Decimal("0.00")
        tItemsVendidos = 0
        tValorizado = Decimal("0.00")
        tAl100 = Decimal("0.00")
        tPendiente = Decimal("0.00")
        tGanancia = Decimal("0.00")
        for item in datos:
        #Proveedor,ItemsComprados,MontoCompra,IVA,%,ItemVendido,Valorizado,Al100,Pendiente,Ganancia,Eficacia
        #0         1              2           3   4 5           6          7     8         9        10
            idproveedor = str(item["idproveedor"])
            nombre = str(item["nombre"])
            proveedor = nombre+" / "+idproveedor
            itemscomprados = str(item["itemscomprados"])
            montocomprado = str(item["montocomprado"])
            iva = "21"
            porcentaje = str(item["porcentaje"])
            itemsvendidos = str(item["itemsvendidos"])
            ventavalorizada = str(item["ventavalorizada"])
            ventaal100 = str(item["ventaal100"])
            pendiente = str(item["pendiente"])
            try:
                pendiente = Decimal(pendiente).quantize(Decimal("0.10"))
            except:
                pendiente = Decimal("0.00")
            if pendiente<Decimal("0.00"):
                pendiente = "-"
            else:
                pendiente = str(pendiente)
            ganancia = str(item["ganancia"])
            efectividad = str(item["efectividad"])
            try:
                efectividad = Decimal(efectividad).quantize(Decimal("0.00"))
            except:
                efectividad = Decimal("0.00")
            efectividad = str(efectividad)
            
            tItemsComprados+= item["itemscomprados"]
            tMontoComprado+= Decimal(montocomprado)
            tItemsVendidos+= item["itemsvendidos"]
            tValorizado+= Decimal(ventavalorizada)
            tAl100+= Decimal(ventaal100)
            try:
                tPendiente+= Decimal(pendiente)
            except:
                tPendiente+= Decimal("0.00")
            tGanancia+= Decimal(ganancia)
            
            self.grid1.SetCellValue(fil,0,proveedor)
            self.grid1.SetCellValue(fil,1,itemscomprados)
            self.grid1.SetCellValue(fil,2,montocomprado)
            self.grid1.SetCellValue(fil,3,iva)
            self.grid1.SetCellValue(fil,4,porcentaje)
            self.grid1.SetCellValue(fil,5,itemsvendidos)
            self.grid1.SetCellValue(fil,6,ventavalorizada)
            self.grid1.SetCellValue(fil,7,ventaal100)
            self.grid1.SetCellValue(fil,8,pendiente)
            self.grid1.SetCellValue(fil,9,ganancia)
            self.grid1.SetCellValue(fil,10,efectividad)
            
            self.grid1.SetCellBackgroundColour(fil,1,GRIS)
            self.grid1.SetCellBackgroundColour(fil,5,GRIS)
            self.grid1.SetCellBackgroundColour(fil,9,GRIS)
            self.grid1.SetCellAlignment(fil,1, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,7, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,8, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,9, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            self.grid1.SetCellAlignment(fil,10, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
            
            self.grid1.AppendRows()
            fil+= 1

        tItemsComprados = str(tItemsComprados)
        tMontoComprado = str(tMontoComprado.quantize(Decimal("0.10")))
        tItemsVendidos = str(tItemsVendidos)
        tValorizado = str(tValorizado.quantize(Decimal("0.10")))
        tAl100 = str(tAl100.quantize(Decimal("0.10")))
        tPendiente = str(tPendiente.quantize(Decimal("0.10")))
        tGanancia = str(tGanancia.quantize(Decimal("0.10")))

        self.grid1.SetCellValue(fil,0,"TOTALES")
        self.grid1.SetCellValue(fil,1,tItemsComprados)
        self.grid1.SetCellValue(fil,2,tMontoComprado)
        self.grid1.SetCellValue(fil,5,tItemsVendidos)
        self.grid1.SetCellValue(fil,6,tValorizado)
        self.grid1.SetCellValue(fil,7,tAl100)
        self.grid1.SetCellValue(fil,8,tPendiente)
        self.grid1.SetCellValue(fil,9,tGanancia)

        self.grid1.SetCellBackgroundColour(fil,1,GRIS)
        self.grid1.SetCellBackgroundColour(fil,5,GRIS)
        self.grid1.SetCellBackgroundColour(fil,9,GRIS)
        self.grid1.SetCellAlignment(fil,1, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,2, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,7, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,8, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,9, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellAlignment(fil,10, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

        self.ajustarAnchoColumnas()
        
    def OnGananciaPorProveedor(self, event):
        texto = "Este REPORTE necesita que especifique parametros\n"
        texto+= "de periodos de Venta y Compra. Puede especificar\n"
        texto+= "por Temporada, por periodo de fecha o combinarlos.\n\n"
        texto+= "Los resultados dependeran de como los combine.\n\n"
        texto+= "Puede pedirlo de un proveedor o de todos (deje en\n"
        texto+= "blanco el parametro de proveedores para TODOS"
        if not self.confirma(texto):
            self.radioButton1.SetFocus()
            return

        print "Procesando Ganancia por Proveedor"
        self.limpiarGrilla()
        self.crearTablaProvisoriaGananciaPorProveedor()

        idproveedor = self.textCtrl1.GetLabel()
        nombre = self.textCtrl2.GetLabel()
        self.buscarProveedor(idproveedor,nombre)
        
        self.grid1.DeleteCols()
        #Proveedor,ItemsComprados,MontoCompra,IVA,%,ItemVendido,Valorizado,Al100,Pendiente,Ganancia,Eficacia
        #0         1              2           3   4 5           6          7     8         9        10
        columnas = ['Proveedor','Items\nComprados','Monto\nCompra','IVA','%','Items\nVendidos',
                    'Venta\nValorizada','Al 100%\n(optimo)',
                    'Pendiente\na vender','Ganancia','Eficacia',]
        for col,item in enumerate(columnas):
            self.grid1.AppendCols()
            self.grid1.SetColLabelValue(col,item)
        self.ajustarAnchoColumnas()
        
        fecha1,fecha2,fecha3,fecha4 = self.rangoFecha()

        proveedores = []
        if self.textCtrl1.GetLabel()!="":
            proveedores.append(self.textCtrl1.GetLabel())
        else:
            proveedoresConCompras = self.proveedoresConCompras(fecha1,fecha2)
            proveedoresConVentas = self.proveedoresConVentas(fecha1,fecha2)
            
            if not self.checkBox1.GetValue():
                for item in proveedoresConCompras:
                    proveedores.append(item[0])
                for item in proveedoresConVentas:
                    proveedores.append(item[0])
            else:
                for item in proveedoresConCompras:
                    proveedores.append(item[0])

        #quito repetidos y ordeno
        aux = set(proveedores)
        lista = list(aux)
        lista.sort()
        proveedores = lista
        
        self.comprasProveedores(proveedores)
        self.devolucionProveedores(proveedores)
        sql = "SELECT idsucursal FROM sucursales WHERE 1"
        datos = consultasBD.ordenCrudaDict(sql)
        for item in datos:
            sucursal = item["idsucursal"]-1
            self.ventasPorProveedor(sucursal,proveedores)
        self.cargaArchivoGananciaPorProveedor()
        self.actualizandoGrillaGananciaPorProveedor()
        self.codigoListado = 1

        #limpio tablas de trabajo
        print "-Eliminando tablas auxiliares"
        sql = "DROP TABLE IF EXISTS estimacionesestadisticas"
        consultasBD.ordenCruda(sql)

    def reporte1(self):
        print "Imprimiendo reporte"
        f=open("c:\\matrisamor.doc\\reporte-estimacionesEstadisticas.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        totalItemPorPagina = 50
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.getfechaTime()
            fecha1 = self.datePickerCtrl1.GetLabel()
            fecha2 = self.datePickerCtrl2.GetLabel()
            fecha3 = self.datePickerCtrl3.GetLabel()
            fecha4 = self.datePickerCtrl4.GetLabel()

            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="center" align="left" width="33%">\n'
            a+= 'SUSSAN BOUTIQUE\n'
            a+= '</td>\n'
            if self.radioButton2.GetValue():
                a+= '<td valign="center" align="left" width="34%"><font size="0.02">\n'
                a+= 'VENTAS desde '+fecha1+' hasta '+fecha2+'<br>\n'
            else:
                a+= '<td valign="center" align="left" width="34%"><font size="0.02">\n'
                a+= 'VENTAS temporada '+self.comboBox1.GetLabel()+'<br>\n'
            if self.radioButton4.GetValue():
                a+= 'COMPRAS desde '+fecha3+' hasta '+fecha4+'\n'
                a+= '</font></td>\n'
            else:
                a+= 'COMPRAS temporada '+self.comboBox2.GetLabel()+'\n'
                a+= '</font></td>\n'
            a+= '<td valign="center" align="right" width="33%">'+fecha
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</td>\n'
            a+= '</tr>\n'
            a+= '</table>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
            a = '<hr>'

            a+= '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            i = 0
            taman = "1.5"
            for col in xrange(self.grid1.GetNumberCols()):
                i+= 1
                alineacion = "right"
                if col == 0:
                    alineacion = "left"
                titulo = self.grid1.GetColLabelValue(col)
                a+= '<td valign="top" align="'+alineacion+'"><font size="'
                a+= taman+'">'+titulo+'</font></td> \n'
            a+= '</tr> \n'
            a+= '<tr>\n'
            a+= '<td colspan="'+str(i)+'"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)

        renglon = 0
        for fil in xrange(self.grid1.GetNumberRows()):
            if self.grid1.GetCellValue(fil,0)=="": continue
            cadena = '<tr> \n'
            taman = "1.5"
            for col in xrange(self.grid1.GetNumberCols()):
                celda = self.grid1.GetCellValue(fil,col)
                alineacion = "right"
                if col == 0:
                    alineacion = "left"
                cadena+= '<td valign="center" align="'+alineacion+'">'
                cadena+= '<font size="'+taman+'">'+celda+'</font></td> \n'
            
            cadena+= '</tr>\n'
            f.write(cadena)
            
            renglon+= 1
            
            if renglon == totalItemPorPagina :
                f.write("</table><!-- salto de pagina -->\n")
                f.write("<p STYLE='page-break-after: always;'></p>\n")                
                renglon = 0
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)

        tama = '"1"'
            
        cadena = '</table>\n'
        f.write(cadena)
        f.close()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\matrisamor.doc\\reporte-estimacionesEstadisticas.html")

    def OnImprimir(self, event):
        if self.codigoListado == 0: return
        if self.codigoListado == 1: #ganancia por proveedor
            self.reporte1()
        
